/**
 * Badge 组件的主题配置
 * 
 * 基于企业级设计规范 (Badge.json) 的完整配置
 * 包含所有徽标样式定义
 */

import type { ComponentToken } from 'antd/es/badge/style';

// ========== 设计 Token 常量 ==========

/**
 * 层级相关 Token
 */
const Z_INDEX_TOKENS = {
  indicator: 'auto' as const,
} as const;

/**
 * 尺寸相关 Token
 */
const SIZE_TOKENS = {
  // 标准高度
  indicatorHeight: 20,
  
  // 小号高度
  indicatorHeightSM: 14,
  
  // 点状尺寸
  dotSize: 6,
  
  // 状态尺寸
  statusSize: 6,
} as const;

/**
 * 字体相关 Token
 */
const FONT_TOKENS = {
  // 文字大小
  textFontSize: 12,
  textFontSizeSM: 12,
  
  // 字重
  textFontWeight: 'normal' as const,
} as const;

/**
 * Badge 完整主题配置
 * 
 * 根据设计规范文件 Badge.json 定义的企业级徽标样式
 * 涵盖所有徽标类型和尺寸的完整配置
 * 
 * @example
 * ```tsx
 * <ConfigProvider theme={{ components: { Badge: badgeThemeConfig } }}>
 *   <Badge count={5}>
 *     <Avatar shape="square" />
 *   </Badge>
 *   
 *   <Badge dot>
 *     <Avatar shape="square" />
 *   </Badge>
 *   
 *   <Badge status="success" text="成功" />
 *   <Badge status="processing" text="处理中" />
 * </ConfigProvider>
 * ```
 */
export const badgeThemeConfig: Partial<ComponentToken> = {
  // ========== 层级配置 ==========
  indicatorZIndex: Z_INDEX_TOKENS.indicator,
  
  // ========== 尺寸配置 ==========
  indicatorHeight: SIZE_TOKENS.indicatorHeight,
  indicatorHeightSM: SIZE_TOKENS.indicatorHeightSM,
  dotSize: SIZE_TOKENS.dotSize,
  statusSize: SIZE_TOKENS.statusSize,
  
  // ========== 字体配置 ==========
  textFontSize: FONT_TOKENS.textFontSize,
  textFontSizeSM: FONT_TOKENS.textFontSizeSM,
  textFontWeight: FONT_TOKENS.textFontWeight,
};

/**
 * 获取 Badge 主题配置
 * 
 * 支持部分覆盖默认配置，可以基于完整的设计规范进行定制
 * 
 * @param customConfig 自定义配置（可选）
 * @returns 合并后的主题配置
 * 
 * @example
 * ```tsx
 * // 基于设计规范的定制
 * const myBadgeTheme = getBadgeTheme({
 *   indicatorHeight: 24,               // 自定义徽标高度
 *   textFontSize: 14,                  // 自定义文字大小
 *   dotSize: 8,                        // 自定义点状尺寸
 * });
 * 
 * <ConfigProvider theme={{ components: { Badge: myBadgeTheme } }}>
 *   <Badge count={10}>
 *     <Avatar shape="square" />
 *   </Badge>
 * </ConfigProvider>
 * ```
 */
export const getBadgeTheme = (
  customConfig?: Partial<ComponentToken>
): Partial<ComponentToken> => {
  return {
    ...badgeThemeConfig,
    ...customConfig,
  };
};

/**
 * 导出 Badge 组件的 Token 类型
 * 方便 TypeScript 类型检查和开发时的智能提示
 */
export type { ComponentToken as BadgeComponentToken } from 'antd/es/badge/style';

